#include "SENSOR/sensor_app.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 ****************************************************************************************************
 * DONE 用户变量区
 ****************************************************************************************************
 */


//循迹模块数据包
uint16_t track_Data;

/**
 ****************************************************************************************************
 * 驱动函数区
 ****************************************************************************************************
 */

 
/**
 * @name 循迹模块数据接收
 * @brief  接收循迹模块数据值s
 */
void Track_DataReceive(void)
{
   track_Data = HAL_GPIO_ReadPin(OUT1_GPIO_Port,OUT1_Pin);
   track_Data = track_Data*10 + HAL_GPIO_ReadPin(OUT2_GPIO_Port,OUT2_Pin);
   track_Data = track_Data*10 + HAL_GPIO_ReadPin(OUT3_GPIO_Port,OUT3_Pin);
   track_Data = track_Data*10 + HAL_GPIO_ReadPin(OUT4_GPIO_Port,OUT4_Pin);
   track_Data = track_Data*10 + HAL_GPIO_ReadPin(OUT5_GPIO_Port,OUT5_Pin);
}

/**
 ****************************************************************************************************
 * DONE 用户函数区
 ****************************************************************************************************
 */

/**
 * @name 传感器初始化
 * @brief 超声波传感器初始化
 */
void SENSOR_Init(void)
{
   Ultrasonic_Init();
}


#if TRACK_GETDATA_MODE == 0

/**
 * @name 循迹处理数据函数
 * @brief 处理循迹模块传入的数据
 * @retval TracK_dir 循迹区域标志，Track_Area 类型
 */
Track_Area SENSOR_Track_Dispose(void)
{
   Track_Area TracK_dir;
   Track_DataReceive();

   if(track_Data == 00000)       TracK_dir = Track_B;    //超出
   else if(track_Data == 00001)  TracK_dir = Track_LLL;  //左外
   else if(track_Data == 00011)  TracK_dir = Track_LL;   //左
   else if(track_Data == 00111)  TracK_dir = Track_LL;   //左
   else if(track_Data == 00110)  TracK_dir = Track_L;    //中左
   else if(track_Data == 00100)  TracK_dir = Track_C;    //中
   else if(track_Data == 01110)  TracK_dir = Track_C;    //中
   else if(track_Data == 01100)  TracK_dir = Track_R;    //中右
   else if(track_Data == 11100)  TracK_dir = Track_RR;   //右
   else if(track_Data == 11000)  TracK_dir = Track_RR;   //右
   else if(track_Data == 10000)  TracK_dir = Track_RRR;  //右外
   else TracK_dir = Track_S;    //异常

   return TracK_dir;
}

#elif TRACK_GETDATA_MODE == 1

/**
 * @name 循迹处理数据函数
 * @brief 处理循迹模块传入的数据
 * @retval TracK_dir 循迹区域标志，Track_Area 类型
 */
Track_Area SENSOR_Track_Dispose(void)
{
   Track_Area TracK_dir;

   if(Track_Data == 0x00)       TracK_dir = Track_B;    //超出
   else if(Track_Data == 0x01)  TracK_dir = Track_LLL;  //左外
   else if(Track_Data == 0x0F)  TracK_dir = Track_LLL;  //左外
   else if(Track_Data == 0x02)  TracK_dir = Track_LL;   //左
   else if(Track_Data == 0x03)  TracK_dir = Track_LL;   //左
   else if(Track_Data == 0x07)  TracK_dir = Track_LL;   //左
   else if(Track_Data == 0x06)  TracK_dir = Track_L;    //中左
   else if(Track_Data == 0x04)  TracK_dir = Track_C;    //中
   else if(Track_Data == 0x0E)  TracK_dir = Track_C;    //中
   else if(Track_Data == 0x0C)  TracK_dir = Track_R;    //中右
   else if(Track_Data == 0x1C)  TracK_dir = Track_RR;   //右
   else if(Track_Data == 0x18)  TracK_dir = Track_RR;   //右
   else if(Track_Data == 0x08)  TracK_dir = Track_RR;   //右
   else if(Track_Data == 0x1E)  TracK_dir = Track_RRR;  //右外
   else if(Track_Data == 0x10)  TracK_dir = Track_RRR;  //右外
   else TracK_dir = Track_S;    //异常

   return TracK_dir;
}


#endif



